﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Data;

namespace Guarouba
{
    public partial class Default2 : System.Web.UI.Page
    {
        #region Vars Públicas

        private StringBuilder sbMenu = new StringBuilder();
        private StringBuilder sbMenuPai = new StringBuilder();
        private StringBuilder sbMenuFilho = new StringBuilder();

        private string curMenuPai = string.Empty;
        private string curMenuFilho = string.Empty;
        private string lastMenuPai = string.Empty;

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            //Montar Menu           

            DataTable dt = new DataTable();
            dt.Columns.Add("mnPai");
            dt.Columns.Add("mnFilho");

            DataTable table = new DataTable();
            table.Columns.Add("mnPai", typeof(string));
            table.Columns.Add("mnFilho", typeof(string));

            table.Rows.Add("Cadastros", "Cliente");
            table.Rows.Add("Cadastros", "Produto");
            table.Rows.Add("Logistica", "Estoque");
            table.Rows.Add("Financeiro", "Contas a Pagar");
            table.Rows.Add("Financeiro", "Contas a Receber");            

            MontarMenu(table);
        }

        private void FinalizaMenuPai(bool isLastRegister, string mnFilho)
        {
            sbMenuPai.AppendLine(@"<li class=""dropdown"">");
            sbMenuPai.AppendLine(@"<a href=""#"" class=""dropdown-toggle"" data-toggle=""dropdown"">");

            //Nessa linha adiciona o nome do Menu Pai
            sbMenuPai.AppendLine(lastMenuPai);

            sbMenuPai.AppendLine(@"<b class=""caret""></b>");
            sbMenuPai.AppendLine(@"</a>");
            sbMenuPai.AppendLine(@"<ul class=""dropdown-menu"">");

            //Nessa linha adiciona os Menus Filhos
            sbMenuPai.AppendLine(sbMenuFilho.ToString());

            sbMenuPai.AppendLine(@"</ul>");
            sbMenuPai.AppendLine(@"</li>");

            //Limpar SB Menu Filho para novos cadastros
            sbMenuFilho.Clear();

            //Verifica se é o último Registro para finalizar a Montagem do Menu
            if (!isLastRegister)
            {
                sbMenuFilho.Append(@"<li><a href=""#"">");
                sbMenuFilho.Append(mnFilho);
                sbMenuFilho.Append(@"</a></li>");
                sbMenuFilho.AppendLine(Environment.NewLine);

                //Define o nome do MenuLast com o nome do MenuPai
                lastMenuPai = curMenuPai;
            }
        }

        private void MontarMenu(DataTable dt)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {                
                //Valida se o Menu Pai é Igual ao último registro lido
                if (curMenuPai != dt.Rows[i]["mnPai"].ToString())
                {
                    curMenuPai = dt.Rows[i]["mnPai"].ToString();

                    //Se o último registro for igual a branco, adiciona o primeiro valor
                    if (lastMenuPai == string.Empty)
                    {
                        lastMenuPai = dt.Rows[i]["mnPai"].ToString();
                        curMenuPai = dt.Rows[i]["mnPai"].ToString();
                        sbMenuFilho.AppendLine(@"<li><a href=""#"">" + dt.Rows[i]["mnFilho"].ToString() + @"</a></li>");
                    }                    
                    else
                    {
                        FinalizaMenuPai(false, dt.Rows[i]["mnFilho"].ToString());         
                    }     
                }
                else
                { 
                    //Menu Pai já foi lido, adicionar Menu Filho ao Menu Pai
                    sbMenuFilho.Append(@"<li><a href=""#"">");
                    sbMenuFilho.Append(dt.Rows[i]["mnFilho"].ToString());
                    sbMenuFilho.Append(@"</a></li>");
                    sbMenuFilho.AppendLine(Environment.NewLine);
                }

                //Validar se é o último registro do Menu Filho
                if (i == dt.Rows.Count - 1)
                {
                    FinalizaMenuPai(true, null);
                }
            }

            //Aqui finaliza a montagem completo do Menu Superior
            sbMenu.AppendLine(@"<div class=""nav-collapse collapse"">");
            sbMenu.AppendLine(@"<ul class=""nav"">");

            //Nessa linha adiciona todos os menus montados
            sbMenu.AppendLine(sbMenuPai.ToString());

            sbMenu.AppendLine(@"</ul>");
            sbMenu.AppendLine(@"</div>");

            //divMenuSuperior.InnerHtml += Environment.NewLine;
            //divMenuSuperior.InnerHtml += sbMenu.ToString();
        }
    }
}